<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">


    <body>

        <ui:composition template="./TemplatePrincipal.xhtml">

            <ui:define name="top">
                <h:form>
                    <p:tabMenu id="menu" activeIndex="1" >  
                        <p:menuitem value="Home" action="MenuPrincipal" />  
                        <p:menuitem value="Users" action="UsuarioFacelets"/>  
                        <p:menuitem value="Author" action="AuthorFacelets" /> 
                        <p:menuitem value="Category" action="CategoryFacelets" />
                        <p:menuitem value="Book" action="BookFacelets" />
                    </p:tabMenu> 
                </h:form>  
            </ui:define>

            <ui:define name="left">

            </ui:define>

            <ui:define name="content">

                <f:view>
                    <h:form id="form" onreset="">
                        <p:panel id="as" visible="false">
                            <f:facet name="options">  
                                <p:menu>  
                                </p:menu>  
                            </f:facet> 
                        </p:panel>

                        <p:panel  id="pnl" header="New user" toggleable="true" toggleOrientation="horizontal" collapsed="true" 
                                  widgetVar="panel" style="text-align-last: justify">  
                            <p:growl id="growl" showDetail="true" /> 

                            <h1><p:outputLabel value="Create/Edit"/></h1>
                            <p:panelGrid id="grid" columns="2" style="text-align: right">
                                <p:outputLabel value="Clave:" for="clave" />
                                <p:inputText id="clave" value="#{usuarioBean.usuario.clave}" title="Clave" required="true" requiredMessage="The Clave field is required."/>
                                <p:outputLabel value="Nombre:" for="nombre" />
                                <p:inputText id="nombre" value="#{usuarioBean.usuario.nombre}" title="Nombre" required="true" requiredMessage="The Nombre field is required."/>
                                <p:outputLabel value="ApellidoPaterno:" for="apellidoPaterno" />
                                <p:inputText id="apellidoPaterno" value="#{usuarioBean.usuario.apellidoPaterno}" title="ApellidoPaterno" required="true" requiredMessage="The ApellidoPaterno field is required."/>
                                <p:outputLabel value="ApellidoMaterno:" for="apellidoMaterno" />
                                <p:inputText id="apellidoMaterno" value="#{usuarioBean.usuario.apellidoMaterno}" title="ApellidoMaterno" />
                                <p:outputLabel value="Telefono:" for="telefono" />
                                <p:inputText id="telefono" value="#{usuarioBean.usuario.telefono}" title="Telefono" />
                                <p:outputLabel value="Direccion:" for="direccion" />
                                <p:inputText id="direccion" value="#{usuarioBean.usuario.direccion}" title="Direccion" required="true" requiredMessage="The Direccion field is required."/>
                                <p:outputLabel value="Ciudad:" for="ciudad" />
                                <p:inputText id="ciudad" value="#{usuarioBean.usuario.ciudad}" title="Ciudad" required="true" requiredMessage="The Ciudad field is required."/>
                                <p:outputLabel value="Estado:" for="estado" />
                                <p:inputText id="estado" value="#{usuarioBean.usuario.estado}" title="Estado" required="true" requiredMessage="The Estado field is required."/>
                                <p:commandButton id="button" value="Guardar" update="form:growl :form:pnl :form:displa"
                                                 oncomplete="if(!args.validationFailed){userDialog.show()}" />
                                <p:commandButton value="Cancelar" onclick="panel.toggle()" update="pnl" immediate="true" /> 
                            </p:panelGrid>


                            <p:ajax event="toggle" listener="#{usuarioBean.handleToggle}" update=":form:growl :form:pnl :form:as"  process="@this"/>  


                        </p:panel>  
                        <p:dialog id="dia" header="Confirm Users" widgetVar="userDialog" resizable="false"  
                                  showEffect="fade" hideEffect="explode">  
                            <h:panelGrid id="displa" columns="2" cellpadding="4">  
                                <h:panelGrid id="r" columns="2" >  
                                    <h:outputText value="Clave:"/>
                                    <h:outputText value="#{usuarioBean.usuario.clave}" title="Clave"/>
                                    <h:outputText value="Nombre:"/>
                                    <h:outputText value="#{usuarioBean.usuario.nombre}" title="Nombre"/>
                                    <h:outputText value="ApellidoPaterno:"/>
                                    <h:outputText value="#{usuarioBean.usuario.apellidoPaterno}" title="ApellidoPaterno"/>
                                    <h:outputText value="ApellidoMaterno:"/>
                                    <h:outputText value="#{usuarioBean.usuario.apellidoMaterno}" title="ApellidoMaterno"/>
                                    <h:outputText value="Telefono:"/>
                                    <h:outputText value="#{usuarioBean.usuario.telefono}" title="Telefono"/>
                                    <h:outputText value="Direccion:"/>
                                    <h:outputText value="#{usuarioBean.usuario.direccion}" title="Direccion"/>
                                    <h:outputText value="Ciudad:"/>
                                    <h:outputText value="#{usuarioBean.usuario.ciudad}" title="Ciudad"/>
                                    <h:outputText value="Estado:"/>
                                    <h:outputText value="#{usuarioBean.usuario.estado}" title="Estado"/>
                                    <p:commandButton value="GuardarCambios"  action="#{usuarioBean.crearUsuario()}" onclick="userDialog.hiden()" />
                                    <p:commandButton value="Cancelar" onclick="userDialog.hiden()" update="pnl" immediate="true" /> 
                                </h:panelGrid> 
                            </h:panelGrid>
                        </p:dialog> 
                    </h:form>
                </f:view>

                <f:view id="fg">
                    <h:form id="form1" >
                        <p:growl id="grow" showDetail="true"/>  
                        <h1><h:outputText value="List"/></h1>

                        <p:dataTable  id="user" value="#{usuarioBean.list}" var="item" widgetVar="userTable"  rowKey="#{item.id}"   emptyMessage="No cars found with given criteria" filteredValue="#{usuarioBean.filteredUser}"
                                      selection="#{usuarioBean.usuario}" selectionMode="single" >

                            <p:ajax event="rowSelect" listener="#{usuarioBean.onEdit}" update=":form1:display :form1:grow" 
                                    oncomplete="carDialog.show()" /> 
                            <p:ajax event="rowUnselect" listener="#{usuarioBean.onRowUnselect}" update=":form1:grow"/>  

                            <f:facet name="header"> 
                                <p:outputPanel>  
                                    <h:outputText value="Search all fields:" />  
                                    <p:inputText id="globalFilter" onkeyup="userTable.filter()" style="width:150px" />  
                                </p:outputPanel>  
                            </f:facet>

                            <p:column headerText="Clave" filterBy="#{item.clave}" >

                                <h:outputText value="#{item.clave}"/>

                            </p:column>
                            <p:column headerText="Nombre" filterBy="#{item.nombre}" sortBy="#{item.nombre}" >

                                <h:outputText value="#{item.nombre}"/>

                            </p:column>
                            <p:column headerText="ApellidoPaterno" filterBy="#{item.apellidoPaterno}" >
                                <h:outputText value="#{item.apellidoPaterno}"/>

                            </p:column >
                            <p:column headerText="ApellidoMaterno" filterBy="#{item.apellidoMaterno}" >

                                <h:outputText value="#{item.apellidoMaterno}" />

                            </p:column>
                            <p:column headerText="Telefono">
                                <h:outputText value="#{item.telefono}"/>

                            </p:column>
                            <p:column>
                                <f:facet name="header">
                                    <h:outputText value="Direccion"/>
                                </f:facet>
                                <h:outputText value="#{item.direccion}"/>
                            </p:column>
                            <p:column headerText="Ciudad">
                                <h:outputText value="#{item.ciudad}"/>

                            </p:column>
                            <p:column headerText="Estado">
                                <h:outputText value="#{item.estado}"/>

                            </p:column> 

                        </p:dataTable>

                        <p:dialog id="dialog" header="Car Detail" widgetVar="carDialog" resizable="false"  
                                  showEffect="fade" hideEffect="explode">  

                            <h:panelGrid id="display" columns="2" cellpadding="4">  
                                <h:panelGrid id="d" columns="2">
                                    <h:outputLabel value="Clave:" for="clave" />
                                    <p:inplace id="ajaxInplace" editor="true">  
                                        <h:inputText id="clave" value="#{usuarioBean.usuario.clave}" title="Clave" required="true" requiredMessage="The Clave field is required."/>
                                    </p:inplace>
                                    <h:outputLabel value="Nombre:" for="nombre" />
                                    <p:inplace id="ajax" editor="true">  
                                        <h:inputText id="nombre" value="#{usuarioBean.usuario.nombre}" title="Nombre" required="true" requiredMessage="The Nombre field is required."/>
                                    </p:inplace>
                                    <h:outputLabel value="ApellidoPaterno:" for="apellidoPaterno" />
                                    <p:inplace id="ajaxI" editor="true">  
                                        <h:inputText id="apellidoPaterno" value="#{usuarioBean.usuario.apellidoPaterno}" title="ApellidoPaterno" required="true" requiredMessage="The ApellidoPaterno field is required."/>
                                    </p:inplace>
                                    <h:outputLabel value="ApellidoMaterno:" for="apellidoMaterno" />
                                    <p:inplace id="ajaxIn" editor="true">  
                                        <h:inputText id="apellidoMaterno" value="#{usuarioBean.usuario.apellidoMaterno}" title="ApellidoMaterno" />
                                    </p:inplace>
                                    <h:outputLabel value="Telefono:" for="telefono" />
                                    <p:inplace id="ajaxInp" editor="true">  
                                        <h:inputText id="telefono" value="#{usuarioBean.usuario.telefono}" title="Telefono" />
                                    </p:inplace>
                                    <h:outputLabel value="Direccion:" for="direccion" />
                                    <p:inplace id="ajaxInpl" editor="true">  
                                        <h:inputText id="direccion" value="#{usuarioBean.usuario.direccion}" title="Direccion" required="true" requiredMessage="The Direccion field is required."/>
                                    </p:inplace>
                                    <h:outputLabel value="Ciudad:" for="ciudad" />
                                    <p:inplace id="ajaxInpla" editor="true">  
                                        <h:inputText id="ciudad" value="#{usuarioBean.usuario.ciudad}" title="Ciudad" required="true" requiredMessage="The Ciudad field is required."/>
                                    </p:inplace>
                                    <h:outputLabel value="Estado:" for="estado" />
                                    <p:inplace id="ajaxInplac" editor="true">  
                                        <h:inputText id="estado" value="#{usuarioBean.usuario.estado}" title="Estado" required="true" requiredMessage="The Estado field is required."/>
                                    </p:inplace>
                                    <p:commandButton update="@(form)" value="GuardarCambios"  action="#{usuarioBean.editUser()}" />
                                </h:panelGrid>
                            </h:panelGrid>  
                        </p:dialog> 
                    </h:form>
                </f:view>

            </ui:define>

        </ui:composition>

    </body>
</html>
